using System;
using System.Collections.Generic;
using ns26;
using ns27;
using Triton.Game.Mono;

namespace Triton.Game.Mapping
{
	[Attribute38("EmoteHandler")]
	public class EmoteHandler : MonoBehaviour
	{
		public List<EmoteOption> m_DefaultEmotes => method_3<Class271<EmoteOption>>("m_DefaultEmotes")?.method_25();

		public List<EmoteOption> m_EmoteOverrides => method_3<Class271<EmoteOption>>("m_EmoteOverrides")?.method_25();

		public List<EmoteOption> m_HiddenEmotes => method_3<Class271<EmoteOption>>("m_HiddenEmotes")?.method_25();

		public List<EmoteOption> m_availableEmotes => method_3<Class271<EmoteOption>>("m_availableEmotes")?.method_25();

		public static float MIN_TIME_BETWEEN_EMOTES => MonoClass.smethod_6<float>(TritonHs.MainAssemblyPath, "", "EmoteHandler", "MIN_TIME_BETWEEN_EMOTES");

		public static float TIME_WINDOW_TO_BE_CONSIDERED_A_CHAIN => MonoClass.smethod_6<float>(TritonHs.MainAssemblyPath, "", "EmoteHandler", "TIME_WINDOW_TO_BE_CONSIDERED_A_CHAIN");

		public static float SPAMMER_MIN_TIME_BETWEEN_EMOTES => MonoClass.smethod_6<float>(TritonHs.MainAssemblyPath, "", "EmoteHandler", "SPAMMER_MIN_TIME_BETWEEN_EMOTES");

		public static float UBER_SPAMMER_MIN_TIME_BETWEEN_EMOTES => MonoClass.smethod_6<float>(TritonHs.MainAssemblyPath, "", "EmoteHandler", "UBER_SPAMMER_MIN_TIME_BETWEEN_EMOTES");

		public static int NUM_EMOTES_BEFORE_CONSIDERED_A_SPAMMER => MonoClass.smethod_6<int>(TritonHs.MainAssemblyPath, "", "EmoteHandler", "NUM_EMOTES_BEFORE_CONSIDERED_A_SPAMMER");

		public static int NUM_EMOTES_BEFORE_CONSIDERED_UBER_SPAMMER => MonoClass.smethod_6<int>(TritonHs.MainAssemblyPath, "", "EmoteHandler", "NUM_EMOTES_BEFORE_CONSIDERED_UBER_SPAMMER");

		public static int NUM_CHAIN_EMOTES_BEFORE_CONSIDERED_SPAM => MonoClass.smethod_6<int>(TritonHs.MainAssemblyPath, "", "EmoteHandler", "NUM_CHAIN_EMOTES_BEFORE_CONSIDERED_SPAM");

		public static int EMOTE_COUNT => MonoClass.smethod_6<int>(TritonHs.MainAssemblyPath, "", "EmoteHandler", "EMOTE_COUNT");

		public bool m_emotesShown => method_2<bool>("m_emotesShown");

		public int m_shownAtFrame => method_2<int>("m_shownAtFrame");

		public EmoteOption m_mousedOverEmote => method_3<EmoteOption>("m_mousedOverEmote");

		public float m_timeSinceLastEmote => method_2<float>("m_timeSinceLastEmote");

		public int m_totalEmotes => method_2<int>("m_totalEmotes");

		public int m_chainedEmotes => method_2<int>("m_chainedEmotes");

		public EmoteHandler(IntPtr address, string className)
			: base(address, className)
		{
		}

		public EmoteHandler(IntPtr address)
			: this(address, "EmoteHandler")
		{
		}

		public static EmoteHandler Get()
		{
			return MonoClass.smethod_15<EmoteHandler>(TritonHs.MainAssemblyPath, "", "EmoteHandler", "Get", Array.Empty<object>());
		}

		public void Awake()
		{
			method_8("Awake");
		}

		public void Start()
		{
			method_8("Start");
		}

		public void DetermineAvailableEmotes()
		{
			method_8("DetermineAvailableEmotes");
		}

		public void OnDestroy()
		{
			method_8("OnDestroy");
		}

		public void Update()
		{
			method_8("Update");
		}

		public void ChangeAvailableEmotes()
		{
			method_8("ChangeAvailableEmotes");
		}

		public void ResetTimeSinceLastEmote()
		{
			method_8("ResetTimeSinceLastEmote");
		}

		public void ShowEmotes()
		{
			method_8("ShowEmotes");
		}

		public void HideEmotes()
		{
			method_8("HideEmotes");
		}

		public bool AreEmotesActive()
		{
			return method_11<bool>("AreEmotesActive", Array.Empty<object>());
		}

		public void HandleInput()
		{
			method_8("HandleInput");
		}

		public bool IsMouseOverEmoteOption()
		{
			return method_11<bool>("IsMouseOverEmoteOption", Array.Empty<object>());
		}

		public bool IsVisualEmoteUnfinished()
		{
			return method_11<bool>("IsVisualEmoteUnfinished", Array.Empty<object>());
		}

		public bool EmoteSpamBlocked()
		{
			return method_11<bool>("EmoteSpamBlocked", Array.Empty<object>());
		}

		public bool IsValidEmoteTypeForOpponent(EmoteType emoteType)
		{
			return method_11<bool>("IsValidEmoteTypeForOpponent", new object[1] { emoteType });
		}

		public void OnHeroChanged(Player player, object userData)
		{
			method_8("OnHeroChanged", player, userData);
		}

		public bool IsMousedOverHero(RaycastHit cardHitInfo)
		{
			return method_11<bool>("IsMousedOverHero", new object[1] { cardHitInfo });
		}

		public bool IsMousedOverSelf(RaycastHit cardHitInfo)
		{
			return method_11<bool>("IsMousedOverSelf", new object[1] { cardHitInfo });
		}

		public bool IsMousedOverEmote(RaycastHit cardHitInfo)
		{
			return method_11<bool>("IsMousedOverEmote", new object[1] { cardHitInfo });
		}
	}
}
